home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / forlib1.arc / SOUND.ASM < prev    next >
Assembly Source File  |  1986-01-15  |  2KB  |  74 lines

  1. DATA SEGMENT PUBLIC 'DATA'
  2. TITLE__ DB 'TITLE: SOUND FOR MS FORTRAN'
  3. COPY_R  DB '   (C) John R. Petrocelli'
  4.         DB '       Schenectady,NY    '
  5.         DB '       01/13/86          '
  6.        BADHZ_MSG   DB  '  ** SOUND  FREQ OUT OF RANGE$'
  7.        BADLEN_MSG  DB  '  ** SOUND  DURATION OUT OF RANGE$'
  8. DATA ENDS
  9. DGROUP GROUP DATA
  10. CODE   SEGMENT 'CODE'
  11.        ASSUME CS:CODE,DS:DGROUP,SS:DGROUP
  12. PUBLIC SOUND
  13. SOUND  PROC FAR
  14.        PUSH BP
  15.        PUSH AX
  16.        PUSH BX
  17.        PUSH CX
  18.        PUSH DX
  19.        PUSH DS
  20.        PUSH DI
  21.        MOV BP,SP
  22.        LES BX,DWORD PTR[BP+22]
  23.        MOV DI,[BX]
  24.        CMP DI,21
  25.        JL  BADHZ
  26.        CMP DI,25000
  27.        JG  BADHZ
  28.        LES BX,DWORD PTR[BP+18]
  29.        MOV BX,[BX]
  30.        CMP BX,21
  31.        JL  BADLEN
  32.        CMP BX,25000
  33.        JG  BADLEN
  34.        MOV AL,0B6H
  35.        OUT 43H,AL
  36.        MOV DX,14H
  37.        MOV AX,4F38H
  38.        DIV DI
  39.        OUT 42H,AL
  40.        MOV AL,AH
  41.        OUT 42H,AL
  42.        IN  AL,61H
  43.        MOV AH,AL
  44.        OR  AL,3
  45.        OUT 61H,AL
  46. WAIT:  MOV CX,2801
  47. SPKR_ON:
  48.        LOOP  SPKR_ON
  49.        DEC BX
  50.        JNZ WAIT
  51.        MOV AL,AH
  52.        OUT 61H,AL
  53. QUIT:  POP DI
  54.        POP DS
  55.        POP DX
  56.        POP CX
  57.        POP BX
  58.        POP AX
  59.        POP BP
  60.        RET 08
  61. BADHZ:
  62.        LEA DX,BADHZ_MSG
  63.        MOV AX,0900H
  64.        INT 21H
  65.        JMP QUIT
  66. BADLEN:
  67.        LEA DX,BADLEN_MSG
  68.        MOV AX,0900H
  69.        INT 21H
  70.        JMP QUIT
  71.        SOUND ENDP
  72.        CODE ENDS
  73. END
  74.